package com.qqtech.qquan.circle.dao;

import java.util.List;

import com.qqtech.core.frame.dao.BaseDao;
import com.qqtech.qquan.circle.model.CircleMember;
import com.qqtech.qquan.circle.model.CircleMemberQuery;
import com.qqtech.qquan.circle.model.CircleMemberVo;

public interface CircleMemberDao extends BaseDao<CircleMember> {
	/**
	 * 只获取圈子ids
	 * @param communityJoinQuery
	 * @return
	 */
	List<Integer> queryCircleIds(CircleMemberQuery circleMemberQuery);
	
	/**
	 * 我创建的圈子和我加入的圈子IDS-包括隐私的
	 * @param userId
	 * @return
	 */
	List<Integer> queryMyCircleIds(CircleMemberQuery query);
	
	
	/**
	 * 查询-我加入的圈子IDS（不包括我创建的）
	 * @param userId
	 * @return
	 */
	List<Integer> queryMyJoinCircleIds(Integer userId);
	
	/**
	 * 查询-我创建的圈子IDS
	 * @param userId
	 * @return
	 */
	List<Integer> queryMyCreatedCircleIds(Integer userId);
	/**
	 * 我创建的圈子和我加入的圈子IDS-公开的
	 * @param userId
	 * @return
	 */
	List<Integer> queryMyOpenCircleIds(Integer userId);
	
	
	/**
	 * 查询-我管理的圈子IDS（包括我创建的）
	 * @param userId
	 * @return
	 */
	List<Integer> queryMyManageCircleIds(Integer userId);
	
	/**
	 * 增加签到次数
	 * @param circleId
	 * @param memberId
	 * @param addSignCount 增加次数
	 * @return
	 */
	int increaseSignCount(Integer circleId,Integer memberId, int addSignCount);
	/**
	 * 增加话题次数
	 * @param circleId
	 * @param memberId
	 * @param addTopicCount 增加次数
	 * @return
	 */
	int increaseTopicCount(Integer circleId,Integer memberId, int addTopicCount);
	
	/**
	 * 更新一个圈子的成成员信息
	 * @param member
	 * @return
	 */
	int updateByCircleId(CircleMember member);
	
	
	/**
	 * 我创建和加入的群聊ID列表 -所有的
	 * @param userId
	 * @return
	 */
	List<Integer> queryMyGroupChatIds(Integer userId);
	/**
	 * 查询圈子成员ID列表 -所有的
	 * @param circleId
	 * @return
	 */
	List<Integer> queryCircleMemberIds(Integer circleId);
	
	/**
	 * 查询圈子成员的完整信息
	 * @param circleId
	 * @return
	 */
	List<CircleMemberVo> queryCircleFullMember(Integer circleId);
	
	/**
	 * 查询圈子部份成员的完整信息
	 * @param circleId
	 * @return
	 */
	List<CircleMemberVo> queryPartOfCircleFullMember(Integer circleId);

	/**
	 * 查询发布了话题的圈子成员的完整信息 
	 * @param circleId
	 * @return
	 */
	List<CircleMemberVo> queryCircleTopicCreators(Integer circleId);

	/**
	 * 查询我的圈子列表(我创建及我加入的)【按发布话题的时间倒序】
	 * @param userId
	 * @return
	 */
	List<Integer> queryMyOrderlyCircleIds(Integer userId);
	
	
}
